package core.treino;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import core.exception.GeneticoException;
import core.redeNeural.RedeNeural;
import core.redeNeural.Serializador;

public class TreinadorTeste {

	public static void main(String args[]) throws GeneticoException{
		Treinador treinador = new Treinador();
		List<RedeNeural> populacao = new ArrayList<RedeNeural>();
		int i;
		final int TAMANHO_POPULACAO = 60;
		final int NUM_GERACOES = 5001;
	
		//Do zero
//		for(i=0;i<TAMANHO_POPULACAO; i++){
//			populacao.add(new RedeNeural());		
//		}
		
		java.util.List<String> redes = Serializador.recuperarPopulacao("c:/populacoes/poptipo2-1-ply920");
		Random rand = new Random();
		for(i=0;i<TAMANHO_POPULACAO; i++){		
			//Tipo sem mistura
			populacao.add(new RedeNeural(redes.get(i)));			
		}
		
		for(i=921; i< NUM_GERACOES; i++){
			populacao = treinador.evoluirPopulacao(populacao);
			System.out.println("Geração: " + i);
			
			for(RedeNeural r : populacao)
				System.out.println(r.getFitness());
			
			if(i%3 == 0){
				List<String> codigos = new ArrayList<String>();
				for(RedeNeural r : populacao)
					codigos.add(r.getCodigo());
				Serializador.armazenarPopulacao("c:/populacoes/poptipo2-1-ply-920-3-ply" + i, codigos);
			}
		}
		

	}

}

